Red Hat System Administration II 8.2

Упражнение под руководством преподавателя: Планирование повторяющихся системных заданий

В этом упражнении вы запланируете выполнение команд по разным расписаниям, добавив файлы конфигурации в системные каталоги crontab.

Результаты

Вы сможете:

  • запланировать повторяющееся системное задание для подсчета количества активных пользователей;

  • обновить юнит таймера systemd, который собирает данные о действиях в системе.

Войдите на workstation как пользователь student с паролем student.

На workstation запустите сценарий lab scheduling-system start, чтобы начать упражнение. Этот сценарий обеспечивает очистку и правильную настройку среды.

[student@workstation ~]$ lab scheduling-system start
  1. На workstation установите SSH-подключение к servera как пользователь student.

    [student@workstation ~]$ ssh student@servera
    ...output omitted...
    [student@servera ~]$ 
  2. Выполните команду sudo -i, чтобы переключиться на учетную запись пользователя root.

    [student@servera ~]$ sudo -i
    [sudo] password for student: student
    [root@servera ~]# 
  3. Запланируйте повторяющееся системное задание, которое формирует сообщение log-файла с указанием количества активных пользователей в системе. Задание должно выполняться ежедневно. Вы можете использовать команду w -h | wc -l, чтобы получить количество текущих активных пользователей в системе. Кроме того, используйте команду logger, чтобы сформировать сообщение log-файла.

    1. Создайте файл сценария с именем /etc/cron.daily/usercount и следующим содержимым. Используйте команду vi /etc/cron.daily/usercount, чтобы создать файл сценария.

      #!/bin/bash
      USERCOUNT=$(w -h | wc -l)
      logger "There are currently ${USERCOUNT} active users"
    2. Выполните команду chmod, чтобы включить разрешение на выполнение (x) для /etc/cron.daily/usercount.

      [root@servera ~]# chmod +x /etc/cron.daily/usercount
  4. Пакет sysstat предоставляет юниты systemd с именами sysstat-collect.timer и sysstat-collect.service. Юнит таймера каждые 10 минут запускает юнит службы для сбора данных об активности в системе с помощью сценария оболочки /usr/lib64/sa/sa1. Убедитесь, что пакет sysstat установлен, и измените файл конфигурации юнита таймера, чтобы данные об активности в системе собирались каждые 2 минуты.

    1. Выполните команду yum, чтобы установить пакет sysstat.

      [root@servera ~]# yum install sysstat
      ...output omitted...
      Is this ok [y/N]: y
      ...output omitted...
      Installed:
        sysstat-11.7.3-2.el8.x86_64             lm_sensors-libs-3.4.0-17.20180522git70f7e08.el8.x86_64
      
      Complete!
    2. Скопируйте /usr/lib/systemd/system/sysstat-collect.timer в /etc/systemd/system/sysstat-collect.timer.

      [root@servera ~]# cp /usr/lib/systemd/system/sysstat-collect.timer \
      /etc/systemd/system/sysstat-collect.timer

      Важно

      Не редактируйте файлы в каталоге /usr/lib/systemd. С помощью systemd можно скопировать файл юнита в каталог /etc/systemd/system и отредактировать эту копию. Процесс systemd обрабатывает измененную вами копию вместо файла в каталоге /usr/lib/systemd.

    3. Отредактируйте файл /etc/systemd/system/sysstat-collect.timer, чтобы юнит таймера запускался каждые 2 минуты. Кроме того, замените каждое вхождение строки 10 minutes на 2 minutes во всем файле конфигурации юнита, включая закомментированные строки. Используйте команду vi /etc/systemd/system/sysstat-collect.timer, чтобы отредактировать файл конфигурации.

      ...
      #        Activates activity collector every 2 minutes
      
      [Unit]
      Description=Run system activity accounting tool every 2 minutes
      
      [Timer]
      OnCalendar=*:00/02
      
      [Install]
      WantedBy=sysstat.service

      Вышеуказанные изменения заставляют юнит sysstat-collect.timer запускать каждые 2 минуты юнит sysstat-collect.service, который выполняет команду /usr/lib64/sa/sa1 1 1. Команда /usr/lib64/sa/sa1 1 1 записывает данные об активности в системе в двоичный файл в каталоге /var/log/sa.

    4. Выполните команду systemctl daemon-reload, чтобы убедиться, что systemd видит изменения.

      [root@servera ~]# systemctl daemon-reload
    5. Выполните команду systemctl, чтобы активировать юнит таймера sysstat-collect.timer.

      [root@servera ~]# systemctl enable --now sysstat-collect.timer
    6. Выполните команду while, чтобы подождать, пока в каталоге /var/log/sa не будет создан двоичный файл. Дождитесь появления приглашения оболочки.

      [root@servera ~]# while [ $(ls /var/log/sa | wc -l) -eq 0 ];  \
      do sleep 1s; done

      В команде while выше ls /var/log/sa | wc -l возвращает 0, если файла нет, и 1, если он существует. Команда while определяет, равно ли значение 0, и если да, она входит в цикл, который приостанавливается на одну секунду. Если файл существует, цикл while завершается.

    7. Выполните команду ls -l, чтобы убедиться, что двоичный файл в каталоге /var/log/sa был изменен в последние 2 минуты.

      [root@servera ~]# ls -l /var/log/sa
      total 8
      -rw-r--r--. 1 root root 5156 Mar 25 12:34 sa25
      [root@servera ~]# date
      Mon Mar 25 12:35:32 +07 2019

      В вашей системе вывод вышеуказанных команд может отличаться.

    8. Выйдите из командной оболочки пользователя root и из системы servera.

      [root@servera ~]# exit
      logout
      [student@servera ~]$ exit
      logout
      Connection to servera closed.
      [student@workstation ~]$ 

Конец

На workstation запустите сценарий lab scheduling-system finish, чтобы закончить упражнение. Сценарий удаляет файлы, созданные в ходе упражнения, для очистки среды.

[student@workstation ~]$ lab scheduling-system finish

Упражнение завершено.